/**
 * 生成器是ES6中新增的一种函数控制、使用的方案，她可以让我们更加灵活的控制函数什么时候继续执行、暂停执行
 * 生成器函数
 *  - 生成器函数需要在function后面加一个符号： *
 *  - 生成器函数通过yield关键字来控制函数的执行流程
 *  - 生成器函数的返回值是一个Generator(生成器)
 */
function* foo() {
  console.log('-----函数开始执行-----')

  const value1 = 1
  console.log(value1)
  yield value1

  const value2 = 2
  console.log(value2)
  yield

  const value3 = 3
  console.log(value3)
  yield

  console.log('-----函数结束执行-----')
  return '12345'
}

const generator = foo()
//开始第一段代码，第一个yield之前的代码
console.log(generator.next())
//开始第二段代码，第二个yield之前的代码
generator.next()
//开始第三段代码，第三个yield之前的代码
generator.next()
//开始第四段代码
console.log(generator.next())
console.log(generator.next())
